package com.leo.foodmaster.admin.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.leo.foodmaster.admin.system.entity.SysDictData;
import com.leo.foodmaster.admin.system.entity.SysDictType;
import com.baomidou.mybatisplus.extension.service.IService;
import com.leo.foodmaster.commons.entity.Result;

import java.util.List;

/**
 * <p>
 * 字典类型表 服务类
 * </p>
 *
 * @author Leo
 * @since 2021-06-29
 */
public interface ISysDictTypeService extends IService<SysDictType> {

    /**
     * 查询所有字典数据，并将他们存入缓存
     */
    void listAllDict();

    /**
     * 刷新字典数据到缓存
     *  @param dictKey redis 键
     *  @param dictDataList 字典数据列表
     */
    void refreshDictToCache(String dictKey, List<SysDictData> dictDataList);

    /**
     * 根据字段类型查询字典数据
     * @param dictType 字典类型
     * @return List<SysDictData>
     */
    List<SysDictData> selectDictDataByType(String dictType);

    /**
     * 条件分页查询数据字典类型
     * @param page 分页参数
     * @param name 字典类型名称
     * @param status 字典类型状态
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return IPage<SysDictType>
     */
    IPage<SysDictType> getDictTypePageList(Page<SysDictType> page, String name,
                                           String status, String beginTime, String endTime);

    /**
     * 根据Ids删除字典类型
     * @param dictTypeIds 字典类型Ids
     * @return Result<Object>
     */
    Result<Object> deleteSysDictType(String dictTypeIds);

}
